/**
 * Captain
 * © 2018 Captain copyright，All rights reserved.
 * http://www.sccaptain.com.cn
 * 
 * JAVA : 8
 * 文  件  名: ProjZoneManageService.java
 * 创  建  人: QinYoubin (qin.youbin@sccaptain.com.cn)
 * 创建时间: 2018年1月15日 下午3:41:28
 * 版         本: 1.0.0
 * 备         注:
 * 修订历史:
 */
package com.material.c2c.basedata.service;

import java.util.List;

import com.material.c2c.basedata.entity.DLXX_XZDY;
import com.material.c2c.basedata.model.ZoneManageDTO;

/**
 * 地域管理业务接口。
 * @since 1.0
 * @version 1.0
 * @author QinYoubin (qin.youbin@sccaptain.com.cn)
 */
public interface ProjZoneManageService {
  /**
   * 逐级取得行政地域的列表信息
   *
   * @param parentId
   *          上级地域标识id
   * @return 上级行政地域的所有下一级地域列表信息
   *
   * @since 1.0
   * @version 1.0
   * @author sunfeng (sun.feng@sccaptain.com.cn)
   */
  List<ZoneManageDTO> findSubZoneListByParrentId(String parentId);

  /**
   * 新增行政地域信息
   *
   * @param entity
   *          对应的实体类
   * @param parentZoneId
   *          上级标识
   *
   * @since 1.0
   * @version 1.0
   * @author sunfeng (sun.feng@sccaptain.com.cn)
   */
  void add(DLXX_XZDY entity, String parentZoneId);

  /**
   * 修改行政地域信息
   *
   * @param entity
   *          对应的实体类
   * @param parentZoneId
   *          上级标识
   *
   * @since 1.0
   * @version 1.0
   * @author sunfeng (sun.feng@sccaptain.com.cn)
   */
  void update(DLXX_XZDY entity, String parentZoneId);

  /**
   * 通过主键查询到对应的实体类信息
   *
   * @param id
   *          主键
   * @return 主键对应的实体类
   *
   * @since 1.0
   * @version 1.0
   * @author sunfeng (sun.feng@sccaptain.com.cn)
   */
  DLXX_XZDY getEntityById(String id);

  /**
   * 验证指定级别和编码的地域记录在数据库中是否存在
   *
   * @param jb
   *          级别
   * @param bm
   *          编码
   * @param id
   *          主键
   * @return 存在返回true，不存在返回false
   *
   * @since 1.0
   * @version 1.0
   * @author sunfeng (sun.feng@sccaptain.com.cn)
   */
  boolean validateZoneExistsByJbAndBm(int jb, String bm, String id);

  /**
   * 根据指定地域id得到该地域和其子地域的id字符串列表
   *
   * @param id
   *          指定地域id
   * @return
   *
   * @since 1.0
   * @version 1.0
   * @author sunfeng (sun.feng@sccaptain.com.cn)
   */
  List<String> getIdStrByZoneIdAndChildrenZoneId(String id);

  /**
   * 根据指定的地域id串查询这些地域是否有发包方数据
   *
   * @param ids
   *          指定的地域id列表
   * @return
   *
   * @since 1.0
   * @version 1.0
   * @author sunfeng (sun.feng@sccaptain.com.cn)
   */
  boolean isExistsContracteeData(List<String> ids);

  /**
   * 删除id串中的所有地域信息
   *
   * @param ids
   *          指定的地域id列表
   * @param parentZoneId
   *          上级标识
   *
   * @since 1.0
   * @version 1.0
   * @author sunfeng (sun.feng@sccaptain.com.cn)
   */
  void deleteSpecifyZoneAndSubZone(List<String> ids, String parentZoneId);

  /**
   * 根据行政地域编码查询地域详细信息
   * @param bm
   * @return
   */
  DLXX_XZDY findByBm(String bm);

  /**
   * 根据区县代码查询省级区域简称
   * @param qxdm
   * @return
   */
  String getSjjc(String qxdm);
}
